Software testing is the process of validating and verifying that a software program or application meets the requirements that guided its design and development and works as expected. Software testing can be implemented at any time in the software development process, but most of the effort typically occurs after the requirements have been defined and the coding process has been completed. Software testing results in the identification of defects in the software application to allow the defects to be corrected before the application is released to users.
A software defect describes an error, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most defects arise from mistakes made by people in either a program's source code or its design. Defects trigger errors that in turn can have a wide variety of effects with varying levels of inconvenience to the user of the program.